package com.itheima.gen;

class NumberGenerator {
    /**
     * 生成一个指定范围内的随机整数
     * @param min 最小值 (包含)
     * @param max 最大值 (不包含)
     * @return 随机数
     */
    public static <T extends Number> T generate(T min, T max) {
        // 如果T是Integer
        if (min instanceof Integer && max instanceof Integer) {
            int range = max.intValue() - min.intValue();
            return (T) Integer.valueOf((int) (Math.random() * range) + min.intValue());
        }

        // 如果T是Long
        if (min instanceof Long && max instanceof Long) {
            long range = max.longValue() - min.longValue() + 1;
            return (T) Long.valueOf((long) (Math.random() * range) + min.longValue());
        }

        // 如果T是Double
        double range = max.doubleValue() - min.doubleValue() + 1;
        return (T) Double.valueOf((double) (Math.random() * range) + min.doubleValue());
    }

    public static void main(String[] args) {
        System.out.println(generate(1, 10));
        System.out.println(generate(1L, 10L));
        System.out.println(generate(1.0, 10.0));
    }

}
